%module OISPrereqs

%{
#include "OIS/OISPrereqs.h"
	%}

namespace OIS
{
	//! Each Input class has a General Type variable, a form of RTTI
    enum Type
	{
		OISUnknown       = 0,
		OISKeyboard      = 1,
		OISMouse         = 2,
		OISJoyStick      = 3,
		OISTablet        = 4,
		OISMultiTouch    = 5
	};

	//--------     Shared common components    ------------------------//

	//! Base type for all device components (button, axis, etc)
    enum ComponentType
	{
		OIS_Unknown = 0,
		OIS_Button  = 1, //ie. Key, mouse button, joy button, etc
		OIS_Axis    = 2, //ie. A joystick or mouse axis
		OIS_Slider  = 3, //
		OIS_POV     = 4, //ie. Arrow direction keys
		OIS_Vector3 = 5  //ie. WiiMote orientation
	};

	//! Base of all device components (button, axis, etc)
	class Component
	{
	public:
		Component();
		Component(ComponentType type);
		//! Indicates what type of coponent this is
		ComponentType cType;
	};

	//! Button can be a keyboard key, mouse button, etc
	class Button : public Component
	{
	public:
		Button();
		Button(bool bPushed);
		//! true if pushed, false otherwise
		bool pushed;
	};

	//! Axis component
	class Axis : public Component
	{
	public:
		Axis();

		//! Absoulte and Relative value components
		int abs, rel;

		//! Indicates if this Axis only supports Absoulte (ie JoyStick)
		bool absOnly;
	};

}
